package com.ymh.spring.learn.profile.config;

import org.springframework.context.annotation.Configuration;

/**
 * 
 * 名称：DataSourceConfig<br/>
 * 描述：使用JavaConfig配置数据库<br/>
 * 创建时间：2018年3月20日 下午2:41:32 <br/>
 * 
 * @author aivin
 * @version 1.0.0
 */
@Configuration
public class DataSourceConfig {

	/**
	 * 
	 * <h4>功能：使用一个嵌入式数据库</h4>
	 * 
	 * @return
	 */
	// @Bean(destroyMethod = "shutdown")
	// public DataSource dataSource() {
	// return new EmbeddedDatabaseBuilder().addScript("classpath:schema.sql")
	// .addScript("classpath:test-data.sql").build();
	// }

	 /**
	 *
	 * <h4>功能：使用JNDI数据源</h4>
	 * @return
	 */
	// @Bean
	// public DataSource dataSource() {
	// JndiObjectFactoryBean jndiObjectFactoryBean = new
	// JndiObjectFactoryBean();
	// jndiObjectFactoryBean.setJndiName("jdbs/MyDS");
	// jndiObjectFactoryBean.setResourceRef(true);
	// jndiObjectFactoryBean.setProxyInterface(DataSource.class);
	// return (DataSource) jndiObjectFactoryBean.getObject();
	// }
	

	 /**
	 *
	 * <h4>功能：使用DBCP连接池</h4>
	 * @return
	 */
	// @Bean(destroyMethod = "close")
	// public DataSource dataSource() {
//	 BasicDataSource dataSource = new BasicDataSource();
	// dataSource.setUrl("jdbc:h2:tcp://dbserver/~/test");
	// dataSource.setDriverClassName("org.h2.Driver");
	// dataSource.setUsername("sa");
	// dataSource.setPassword("password");
	// dataSource.setInitialSize(20);
	// dataSource.setMaxActive(30);
	// return dataSource;
	// }
	

	 /**
	 *
	 * <h4>功能：使用C3P0连接池</h4>
	 *
	 * @return
	 */
	// @Bean(destroyMethod = "")
	// public DataSource dataSource() {
	// try {
	// ComboPooledDataSource dataSource = new ComboPooledDataSource();
	// dataSource.setJdbcUrl("jdbc:h2:tcp://dbserver/~/test");
	// dataSource.setDriverClass("org.h2.Driver");
	// dataSource.setUser("sa");
	// dataSource.setPassword("password");
	// dataSource.setInitialPoolSize(3);
	// dataSource.setMaxPoolSize(15);
	// dataSource.setMinPoolSize(2);
	// dataSource.setAcquireIncrement(3);
	// return dataSource;
	// } catch (PropertyVetoException e) {
	// e.printStackTrace();
	// }
	// return null;
	// }

}
